Quake Voting Booth v2.2 - Allows players to vote on game settings such as noexit and teamplay. When a Quakematch is being played over ethernet by a group of friends or coworkers on an office or school network, agreeing on settings generally isn't that big of a problem. But when playing over the internet with 15 people you've never met in person, it's often difficult to agree on how the server should be set up, especially since the server, being dedicated (your server *is* dedicated *isn't it* ? ) can't have it's settings changed by players. Enter Qvote. Just install this utility on your server (no, the players don't have to have it) and the players will be able to decide democratically how they want the server configured. So far the only topics on the ballot are noexit and teamplay, but more are on the way (suggestions welcome). HOW TO USE QVOTE Server admins - Put this progs.dat in a subdirectory of your Quake directory (c:\quake\vote\progs.dat) and start quake with the command line option "-game vote" or whatever you called your subdirectory. If you need to recompile the progs.dat from source, see below. Players - From the console, type "voteexit" to vote for noexit = 0, or "votenoexit" for noexit = 1. "voteteams" votes for teamplay 1, "votenoteams" for teamplay 0. "votestats" shows the current voting status. Type "impulse 15" for a list of available commands (automatically displayed when you die, and are sitting there with a skewed view angle waiting to respawn. SERVER DEFAULTS New in Qvote2.2 is the ability for server admins to specify default values for noexit and teamplay. These default values control how users automatically vote when they join, and how tie votes are resolved. To change these defaults, you will have to modify the constants "noexitdefault" and "teamplaydefault" in vote.qc and then recompile the .qc files with Qcc. You can download and read instructions for use of Qcc at http://www.stomped.com. TEAMPLAY CVAR vs ACTUAL TEAMPLAY Keep in mind, the teamplay which you are voting on with Qvote does not actually enforce teamplay, it just turns on the teamplay cvar, which really only turns friendly fire on/off. If you have teamplay on, but everyone is a different color, not much is going to happen, except that people who happen to have the same color pants cannot damage each other. And even if you have gotten everyone to switch to team colors, you don't necessarily need to have the teamplay cvar on; personally, I like playing team games with teamplay set to 0 : it adds an extra element of strategy to the game, in that you can't just shoot first and ask questions later. CHANGES SINCE 2.0 Finally figured out how to display a message to users, and stuff the command aliases to them, as soon as they connect to a server running Qvote. Added server-determined defaults for the voting topics. BUGS/CAVEATS My other QuakeC patch, Blood!, which makes Quake slightly bloodier (although realistically so, unlike the "violence" and "gore" patches, which are funny, but get old quick and take away from the suspension of disbelief) is included in this patch ( I didn't feel like editing it out of weapons.qc, if you want to, go ahead. ) If id ever does release a version of Quake which allows more than 16 players, this won't work (without recoding almost from scratch [which I will do if alot of people are using it]). The count will get screwed if there are two people with the same netname, as it will remove both of them when one exits ( it was either that, or remove a random one of them). So don't call yourself "player" (dumbass). Teamplay can only be voted to 1 or 0, so it won't work with enhanced teamplay patches which are activated by "teamplay x". Working on this. NOTE TO SERVER OPS If you're running a dedicated, up-most-of-the-time quakeserver and are using this patch on it, let me know; if I don't get any feedback I'll assume nobody's using it and quit working on it. NOTE TO QUAKEC CODERS I included the code to this so that you can modify it or merge it with other patches you want your server to run, but *please* don't look too closely at my code, it's really embarrassingly poorly done. This is partially due to having to code around the limitations of the language, but I probably could have done better even considering. NOTE TO JOHN CARMACK (if you're reading this) First off, Quake kicks ass, and will forever rule the cosmos (forever defined as "until Quake 2"). However, in all honesty, I was a little disappointed with QuakeC. I was expecting something which would allow us to basically change everything about the game except for the graphics engine itself, and would be as full and robust as a genuine programming language, which, I realize, it isn't; but come on, not even arrays??? I haven't used so many simple variables since learning BASIC on Apple II's in elementary school. If you're looking for examples of why a more extensible language would benefit the Quake hacking community, take a look through my code; whenever you find yourself laughing out loud, that's a sure sign something needs to be changed. A sendbytetoclient(), getbytefromclient() and disk I/O would also be extremely useful, and allow us to do some of the stuff we were hoping for originally, like custom player textures, which would be really cool for people with T1+'s ( like me in a year or so when I get to college.) In case this commentary has seemed harsher or more critical than I intended it, I think now would be a good time to add that you are my personal Lord and Savior. THINGS TO LOOK FOR IN VERSION 3 More voting topics, such as : gravity, go to a specific map (not sure if this will be possible), kicking players who are being annoying (same here). Suggestions welcome. I recently saw (but haven't tried) a patch which forces teamplay, killing people who aren't obeying team rules. Sounds pretty cool; with the author's permission, I might include his code, enableable/disableable by user voting. LEGAL CRAP This patch may be freely distributed as long as no charge is made for it, (including CDROM or other for-profit compilation distributions) or for use of a server on which it is being run (which I don't think is legal anyway). I'd really rather you didn't use this as a base for your own patch, but I really can't stop you without going through even more legal BS, so go ahead if you feel the need. This is freeware, so no registration fee is required for it's use, but if you'd like to make a donation to a poor boy with a 486/66 8mb 14.4 machine, email me, I will be forever in your debt (I will also have more time and motivation to make more cool patches for you.) Kevin Bowen Lunatik flame@pacbell.net